{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**车站信息**\n",
    "\n",
    "StationReference = Name | MayBeInitial | Platforms\n",
    "\n",
    "|名称 | 是否可初始化? | 站台 |  \n",
    " |--|--|--|  \n",
    "|a = 武汉站高速场 | 1 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 14 \n",
    "b = 京广高速咸宁北方向 | 1 | 1, 2 \n",
    " c = 武汉动车所 | 1 | 3, 4, 2, 1 \n",
    " d = 武九客专葛店南方向 | 1 | 2, 1 \n",
    " e = 京广高速孝感北方向 | 1 | 2, 1 \n",
    " f = 沪蓉线红安西方向 | 1 | 1, 2 \n",
    " g = 滠武线滠口方向 | 1 | 2, 1 \n",
    " h = 沪蓉线汉口方向 | 1 | 2, 1 \n",
    " i = 丹水池联络线汉口方向 | 1 | 2, 1 \n",
    " j = 至京广线 | 1 | 2, 1 \n",
    " k = 武汉站货车外绕线 | 1 | 2, 1 \n",
    " l = 武汉南线路所 | 1 |  \n",
    " m = 横店东 | 1 |  \n",
    " n = L1L2线路所 | 1 |  \n",
    "\n",
    "**时刻表**  \n",
    " \n",
    "**例子**  \n",
    "|列车编号|类型|最高时速|动拖布置|flag|车站1|车站2|车站3|   \n",
    "|--|--|--|--|--|--|--|--|  \n",
    "|G3472 |COMMUTER |300 |LPPLLPPL |X1 :| b#2#21:40:00#0| e#0#21:45:00#30 |a#0#22:19:00#0|  \n",
    "\n",
    "\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**车次相关信息**  \n",
    "车次信息不变 默认commuter  \n",
    "依照类型设置最高速度 D->200 G->300....  \n",
    "车辆细节 先默认 MTTM 后续修改长编或者重连?  \n",
    "  \n",
    "\n",
    "**停站相关信息**  \n",
    "仅三点式 进场车站 停站 离场车站  \n",
    "始发终到则进行利用抵达时刻等替换  \n",
    "公式=IF(B2<>$J$2,B2,TEXT(E2-0.5/24,\"h:mm:ss\"))    \n",
    "车站 筛选所有车次始发终到，设置字典更改进场离场   \n",
    "\n",
    "  \n",
    "**表格信息**  \n",
    "爬虫以及selenium自动化获取数据   \n",
    "二者合并为一张工作表并预处理为上图格式  \n",
    "始发站和终到站更换为进场车站和离场车站  \n",
    "  \n",
    "\n",
    "**车站信息**  \n",
    "由于自动化需要,武汉站分为京广高速场和综合场\n",
    "基于ORM大小略作修改,仅保留联络线部分  \n",
    "\n",
    "  "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**库函数部分及常规列车信息部分**  \n",
    "- 导入库函数，处理表格以及替换字符并导出  \n",
    "- 使用字典建立常规信息的映射关系  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy\n",
    "import pandas\n",
    "import datetime\n",
    "from random import randint\n",
    "\n",
    "from selenium import webdriver\n",
    "from selenium.webdriver.common.keys import Keys  # 引用keys包\n",
    "from selenium.webdriver.common.by import By\n",
    "from selenium.webdriver.support.ui import Select\n",
    "from selenium.webdriver.common.action_chains import ActionChains\n",
    "import time\n",
    "\n",
    "\n",
    "Excelpath = \"武汉站.xlsx\"  # Excel时刻表文件路径\n",
    "TextPath = \"train.txt\"  # 游戏时刻表文件路径\n",
    "# 速度和编组以及类型映射关系,0为普速1为动车2为高速\n",
    "species = {'K': ['120', 'LPPPPPP', 0], 'T': ['140', 'LPPPPPP', 0], 'Z': ['160', 'LPPPPPP', 0],\n",
    "           'D': ['200', 'LPPL', 1], 'C': ['200', 'LPPL', 1], 'G': ['300', 'LPPLLPPL', 2]}\n",
    "\n",
    "\n",
    "# 车站-编号,掉向,用时以及运行车辆种类映射关系\n",
    "# 图片左(0)右(1)侧线路key值相同则掉向,\n",
    "# 国铁车辆行走左侧,2为数据为左侧股道编号\n",
    "# [车站编号,车站所在侧(0为左侧),车辆进场股道,车辆离场行走股道,到达中心车站所用时间,行走车辆类型]\n",
    "station = {'武汉站': ['a', -1, 0, 0, 0, 'CDG'], '武汉动车所': ['c', 1, 0, 0, 5, 'GDC'],\n",
    "           '京广高速咸宁北方向': ['b', 1, 2, 1, 5, 'G'], '武九客专葛店南方向': ['d', 1, 2, 1, 4, 'GD'],\n",
    "           '京广高速孝感北方向': ['e', 1, 1, 2, 10, 'G'], '沪蓉线红安西方向': ['f', 0, 1, 2, 10, 'CDG'],\n",
    "           '沪蓉线汉口方向': ['h', 0, 1, 2, 5, 'G'], '丹水池联络线汉口方向': ['i', 0, 1, 2, 7, 'CD'], }\n",
    "\n",
    "ThisStation=\"武汉站\"\n",
    "# track = {}\n",
    "# 车型关系--待筛选，默认短编\n",
    "marshalling = {}\n",
    "\n",
    "# 始发终到映射关系--待筛选\n",
    "dst = {}\n",
    "\n",
    "# 股道到达,图片左右侧线路,,key值不同则掉向\n",
    "# turnst = {'武九客专武汉方向': 0, '武九客专鄂州方向': 1, '武冈城际黄冈方向': 1}\n",
    "\n",
    "trainDF = pandas.DataFrame(\n",
    "    columns=['车次', '类型', '最高时速', '动拖布置', 'flag'])  # 列车整体信息\n",
    "arriveStDF = pandas.DataFrame(columns=['车站名称', '股道', '到达时间', '停站时间'])  # 进场信息\n",
    "stopStDF = pandas.DataFrame(columns=['车站名称', '股道', '到达时间', '停站时间'])  # 停站信息\n",
    "leaveStDF = pandas.DataFrame(columns=['车站名称', '股道', '到达时间', '停站时间'])  # 离场信息\n",
    "\n",
    "# 存储字符串形式的最终结果\n",
    "trainList = []\n",
    "arriveStList = []\n",
    "stopStList = []\n",
    "leaveStList = []\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**读取表格及数据处理部分**  \n",
    "- 1,读取表格并去除空行  \n",
    "- 2,从车次提取速度等级  \n",
    "- 3,筛选始发站终到站建立替换字典  \n",
    "  \n",
    "  \n",
    "**车次字符串生成部分**  \n",
    "1,车次信息部分  \n",
    " - 车次号,类型,动拖布置及flag保持默认  \n",
    " - 速度等级依照KTZDG等区分映射  \n",
    "\n",
    "2,停站部分    \n",
    " - 停站2(主要车站) 到时及停站时间来自表格部分,股道由由车站大屏生成,终到车则为任意股道  \n",
    " - 进场及离场部分 依照游戏先期测试进行平移推算,股道依照国铁车辆靠左行驶安排,  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      车次  类型 始发站  终到站        到时        开时    检票口\n",
      "0  D7001  动车  武汉  黄冈东  05:37:00  06:07:00  检票口A7\n",
      "1  G3220  高速  武汉  郑州东  05:50:00  06:20:00  检票口B2\n",
      "2  D2179  动车  武汉   安庆  05:53:00  06:23:00  检票口A7\n",
      "3  C5511  动车  武汉  大冶北  05:56:00  06:26:00  检票口A5\n",
      "4  C5521  动车  武汉  大冶北  06:03:00  06:33:00  检票口A6\n"
     ]
    }
   ],
   "source": [
    "# 读取文件\n",
    "sheet0 = pandas.read_excel(io=Excelpath, sheet_name=\"武汉站\")  # 车次及始发终到和检票口信息\n",
    "\n",
    "# 去除空行\n",
    "#sheet0 = sheet0.dropna()\n",
    "sheet0 = sheet0[~(sheet0[\"车次\"].isnull())]  # 删掉空行\n",
    "\n",
    "sheet = sheet0\n",
    "sheet = sheet.reset_index(drop=True)  # 按照车次信息进行连接，合并检票口sheet1\n",
    "sheet = sheet.drop_duplicates(subset=\"车次\")\n",
    "# sheet.replace(\"--:--\",numpy.nan())\n",
    "# sheet=sheet.fillna(value=0)\n",
    "\n",
    "print(sheet.head())\n",
    "\n",
    "trainInfo = sheet[\"车次\"].to_frame()  # 车辆信息\n",
    "# 统计始发终到车站信息\n",
    "ts = pandas.concat([sheet0[\"始发站\"].value_counts(),\n",
    "                   sheet0[\"终到站\"].value_counts()])\n",
    "totalStation = ts.index\n",
    "\n",
    "# print(set(list(totalStation)))  # 所有始发站和终到站统计\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**始发终到替换**  \n",
    "存在多路径问题  \n",
    "- 依照速度等级来进行不同选择\n",
    "- 特殊的则还是手动替换"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 手动建立映射关系,别的方法不会\n",
    "\n",
    "def getArrLeaSt(type, station):\n",
    "    speedType = type[0]\n",
    "    stcode = \"\"\n",
    "    # 多路径车站部分\n",
    "    if speedType == \"G\":  # 高速\n",
    "        ArrLeaveSt = {\n",
    "            '汉口': '沪蓉线汉口方向',\n",
    "            '宜昌东': '沪蓉线汉口方向',\n",
    "            '襄阳东': '沪蓉线汉口方向',\n",
    "            '成都东': '沪蓉线汉口方向',\n",
    "            '利川': '沪蓉线汉口方向',\n",
    "            '重庆北': '沪蓉线汉口方向',\n",
    "        }\n",
    "    elif speedType == \"D\" or speedType == \"C\":  # 动车城际\n",
    "        ArrLeaveSt = {          \n",
    "            '汉口': '丹水池联络线汉口方向',\n",
    "            '宜昌东': '丹水池联络线汉口方向',\n",
    "            '襄阳东': '丹水池联络线汉口方向',\n",
    "            '成都东': '丹水池联络线汉口方向',\n",
    "            '利川': '丹水池联络线汉口方向',\n",
    "            '重庆北': '丹水池联络线汉口方向',\n",
    "        }\n",
    "    else:  # 普速\n",
    "        ArrLeaveSt = {\n",
    "\n",
    "        }\n",
    "\n",
    "    stcode = ArrLeaveSt.get(station)\n",
    "    if stcode != None:\n",
    "        # print(\"车次:{0} 车站:{1} \".format(type, station))\n",
    "        return stcode\n",
    "\n",
    "    # 常规单路径车站\n",
    "    ArrLeaveSt = {\n",
    "        '武汉':'武汉动车所',\n",
    "        '南宁东': '京广高速咸宁北方向',\n",
    "        '北京西': '京广高速孝感北方向',\n",
    "        '南昌西': '武九客专葛店南方向',\n",
    "        '香港西九龙': '京广高速咸宁北方向',\n",
    "        '广州南': '京广高速咸宁北方向',\n",
    "        '武汉': '武汉动车所',\n",
    "        '深圳北': '武九客专葛店南方向',\n",
    "        '西安北': '京广高速孝感北方向',\n",
    "        '温州南': '武九客专葛店南方向',\n",
    "        '兰州西': '京广高速孝感北方向',\n",
    "        '长沙南': '京广高速咸宁北方向',\n",
    "        '郑州东': '京广高速孝感北方向',\n",
    "        '贵阳北': '京广高速咸宁北方向',\n",
    "        '昆明南': '京广高速咸宁北方向',\n",
    "        '上海虹桥': '沪蓉线红安西方向',\n",
    "        '合肥东': '沪蓉线红安西方向',\n",
    "        '厦门': '武九客专葛店南方向',\n",
    "        '南京南': '沪蓉线红安西方向',\n",
    "        '福州': '武九客专葛店南方向',\n",
    "        '杭州东': '武九客专葛店南方向',\n",
    "        '南昌': '武九客专葛店南方向',\n",
    "        '济南': '京广高速孝感北方向', \n",
    "        '青岛北': '京广高速孝感北方向',\n",
    "        '沈阳北': '京广高速孝感北方向',\n",
    "        '厦门北': '武九客专葛店南方向',\n",
    "        '大冶北': '武九客专葛店南方向',\n",
    "        '福州南': '武九客专葛店南方向',\n",
    "        '黄冈东': '武九客专葛店南方向',\n",
    "        '安庆': '武九客专葛店南方向',\n",
    "    }\n",
    "    stcode = ArrLeaveSt.get(station)\n",
    "    if stcode != None:\n",
    "        return stcode\n",
    "    else:\n",
    "        print(\"车次:{0} 车站:{1} 未找到\".format(type, station))\n",
    "        exit()\n",
    "\n",
    "def checkin(entrance):\n",
    "    # 终到车\n",
    "    if entrance==0:\n",
    "        return 0\n",
    "\n",
    "    # 检票口A5 非终到车\n",
    "    en= entrance[-1]\n",
    "    if en=='1': #高速场\n",
    "        return randint(1,3)\n",
    "    elif en=='2':\n",
    "        return randint(4,6)\n",
    "    elif en=='3':\n",
    "        return randint(7,8)\n",
    "    elif en=='4':\n",
    "        return randint(9,11)\n",
    "    elif en=='5':\n",
    "        return randint(11,13)\n",
    "    elif en=='6':\n",
    "        return randint(13,15)\n",
    "    elif en=='7':#综合场\n",
    "        return randint(16,18)\n",
    "    else:\n",
    "        return randint(18,20)\n",
    "    \n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>车次</th>\n",
       "      <th>类型</th>\n",
       "      <th>最高时速</th>\n",
       "      <th>动拖布置</th>\n",
       "      <th>flag</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>D7001</td>\n",
       "      <td>COMMUTER</td>\n",
       "      <td>200</td>\n",
       "      <td>LPPL</td>\n",
       "      <td>X1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>G3220</td>\n",
       "      <td>COMMUTER</td>\n",
       "      <td>300</td>\n",
       "      <td>LPPLLPPL</td>\n",
       "      <td>X1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>D2179</td>\n",
       "      <td>COMMUTER</td>\n",
       "      <td>200</td>\n",
       "      <td>LPPL</td>\n",
       "      <td>X1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>C5511</td>\n",
       "      <td>COMMUTER</td>\n",
       "      <td>200</td>\n",
       "      <td>LPPL</td>\n",
       "      <td>X1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>C5521</td>\n",
       "      <td>COMMUTER</td>\n",
       "      <td>200</td>\n",
       "      <td>LPPL</td>\n",
       "      <td>X1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      车次        类型 最高时速      动拖布置 flag\n",
       "0  D7001  COMMUTER  200      LPPL   X1\n",
       "1  G3220  COMMUTER  300  LPPLLPPL   X1\n",
       "2  D2179  COMMUTER  200      LPPL   X1\n",
       "3  C5511  COMMUTER  200      LPPL   X1\n",
       "4  C5521  COMMUTER  200      LPPL   X1"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 生成车次信息\n",
    "# '列车编号','类型','最高时速','动拖布置','flag' 列车整体信息\n",
    "\n",
    "for index, row in trainInfo.iterrows():\n",
    "    trainNum = row[\"车次\"]\n",
    "    maxspeed = (species.get(trainNum[0]))[0]  # 有字头的列车\n",
    "    if maxspeed == None:  # 最高速度未找到\n",
    "        maxspeed = '120'  # 普客\n",
    "\n",
    "    marshalling = (species.get(trainNum[0]))[1]\n",
    "    # trainTC=marshalling.get() #动拖布置\n",
    "    trainDF.loc[index] = [trainNum, \"COMMUTER\", maxspeed, marshalling, \"X1\"]\n",
    "    trainList.append(\"{0} {1} {2} {3} {4} : \".format(\n",
    "        trainNum, \"COMMUTER\", maxspeed, marshalling, \"X1\"))\n",
    "trainDF.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "mainstation=\"武汉\"\n",
    "\n",
    "wd = webdriver.Firefox()\n",
    "wd.implicitly_wait(10)\n",
    "wd.get('https://www.12306.cn/index/view/infos/ticket_check.html')\n",
    "\n",
    "def getEntance(wd,mainstation,checi):\n",
    "    #输入车次并确认\n",
    "    element1 = wd.find_element(By.XPATH, '//*[@id=\"ticket_check_trainNum\"]')\n",
    "\n",
    "    element1.clear()\n",
    "    element1.send_keys(checi+'\\n')\n",
    "    time.sleep(1)\n",
    "    element1.send_keys(Keys.ENTER) #回车键Enter\n",
    "\n",
    "    #点击下拉框以获得停站选项\n",
    "    time.sleep(1)\n",
    "    wd.find_element(By.XPATH,'//*[@id=\"ticketEntranceSel\"]').click()\n",
    "\n",
    "    #选择停站\n",
    "    time.sleep(1) \n",
    "    elements = wd.find_elements(By.CSS_SELECTOR, '.model-select-option > li')\n",
    "    for ele in elements: #在所有停站中遍历信息\n",
    "        if ele.text==station:\n",
    "            ele.click() #点击下拉框对应选项确认\n",
    "            #如果查询到\n",
    "            btn=wd.find_element(By.CSS_SELECTOR,\".btn\")\n",
    "            btn.click()      #点击查询按钮\n",
    "            checkin=wd.find_elements(By.CSS_SELECTOR,\".check-numnew\")  \n",
    "            time.sleep(0.5)\n",
    "            entrance=checkin[0].text #得到检票口文本信息\n",
    "            # print(\"车次:{0},检票口:{1}\".format (checi,entrance))\n",
    "            if entrance!=None:\n",
    "                return entrance\n",
    "    #没有查询到则为终到车次\n",
    "    print(\"车次:{0} ,{1}站无检票口信息\".format (checi,station))\n",
    "    return 0\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成停站信息\n",
    "for index, row in sheet.iterrows():\n",
    "    arriveSt = getArrLeaSt(row[\"车次\"], row[\"始发站\"])\n",
    "    leaveSt = getArrLeaSt(row[\"车次\"], row[\"终到站\"])\n",
    "\n",
    "    # 上下行编号区分车辆进场股道为1,2道,进场及离场股道\n",
    "    # 靠左行走\n",
    "    arriveTrack = station.get(arriveSt)[2]\n",
    "    leaveTrack = station.get(leaveSt)[3]\n",
    "\n",
    "    # 停站股道,依照检票口选择,没有则填为0，任意股道\n",
    "    # 使用int()去掉float类型的.0,防止因为格式问题读不出股道\n",
    "    row = row.fillna(0)\n",
    "    stopTrack = checkin(row[\"检票口\"])\n",
    "\n",
    "    at = row[\"到时\"]\n",
    "\n",
    "    lt = row[\"开时\"]\n",
    "\n",
    "    # 统一时间格式\n",
    "\n",
    "    strTime1 = datetime.datetime.strptime(str(at), \"%H:%M:%S\")\n",
    "    strTime2 = datetime.datetime.strptime(str(lt), \"%H:%M:%S\")\n",
    "\n",
    "    stopTime = (strTime2-strTime1).seconds/60  # 分钟为单位的停站时间\n",
    "\n",
    "    # 时间处理部分,由到达时刻推出进场时刻\n",
    "    arrTime1 = strTime1-datetime.timedelta(minutes=(station.get(arriveSt))[4])\n",
    "    arrTime2 = str(arrTime1.strftime('%Y-%m-%d %H:%M:%S'))[-8:]  # 仅保留时分秒\n",
    "    arrTime = datetime.datetime.strptime(arrTime2, \"%H:%M:%S\")  # 转换格式\n",
    "\n",
    "    # 离场时刻\n",
    "    leaveTime1 = strTime2+datetime.timedelta(minutes=(station.get(leaveSt))[4])\n",
    "    leaveTime2 = str(leaveTime1.strftime('%Y-%m-%d %H:%M:%S'))[-8:]\n",
    "    leaveTime = datetime.datetime.strptime(leaveTime2, \"%H:%M:%S\")\n",
    "\n",
    "    # 进场\n",
    "    arriveStDF.loc[index] = [arriveSt, arriveTrack, arrTime2, 0]\n",
    "    arriveStList.append(\"{0}#{1}#{2}#{3}\".format(\n",
    "        (station.get(arriveSt))[0], arriveTrack, arrTime2, 0))\n",
    "    # 停站\n",
    "    stopStDF.loc[index] = [ThisStation, stopTrack, row[\"到时\"], stopTime]\n",
    "    stopStList.append(\"{0}#{1}#{2}#{3}\".format(\n",
    "        (station.get(ThisStation))[0], stopTrack, row[\"到时\"], int(stopTime)))\n",
    "\n",
    "    # 离场\n",
    "    leaveStDF.loc[index] = [leaveSt, leaveTrack, leaveTime2, 0]\n",
    "    leaveStList.append(\"{0}#{1}#{2}#{3}\".format(\n",
    "        (station.get(leaveSt))[0], leaveTrack, leaveTime2, 0))\n",
    "    \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "    车站名称  股道      到达时间  停站时间\n",
      "0  武汉动车所   0  05:32:00     0\n",
      "1  武汉动车所   0  05:45:00     0\n",
      "2  武汉动车所   0  05:48:00     0\n",
      "3  武汉动车所   0  05:51:00     0\n",
      "4  武汉动车所   0  05:58:00     0 \n",
      "   车站名称  股道      到达时间  停站时间\n",
      "0  武汉站  17  05:37:00  30.0\n",
      "1  武汉站   4  05:50:00  30.0\n",
      "2  武汉站  17  05:53:00  30.0\n",
      "3  武汉站  12  05:56:00  30.0\n",
      "4  武汉站  15  06:03:00  30.0 \n",
      "         车站名称  股道      到达时间  停站时间\n",
      "0  武九客专葛店南方向   1  06:11:00     0\n",
      "1  京广高速孝感北方向   2  06:30:00     0\n",
      "2  武九客专葛店南方向   1  06:27:00     0\n",
      "3  武九客专葛店南方向   1  06:30:00     0\n",
      "4  武九客专葛店南方向   1  06:37:00     0\n"
     ]
    }
   ],
   "source": [
    "print(arriveStDF.head(), '\\n', stopStDF.head(), '\\n', leaveStDF.head())  # 部分信息\n",
    "wd.quit()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**最终车次结果**  \n",
    "合并车辆信息和停站信息  \n",
    "  \n",
    "**导出部分**  \n",
    "导出为train.txt手动附加原文件头部之后替换原时刻表文件  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['D7001 COMMUTER 200 LPPL X1 : c#0#05:32:00#0 a#17#05:37:00#30 d#1#06:11:00#0 ',\n",
       " 'G3220 COMMUTER 300 LPPLLPPL X1 : c#0#05:45:00#0 a#4#05:50:00#30 e#2#06:30:00#0 ',\n",
       " 'D2179 COMMUTER 200 LPPL X1 : c#0#05:48:00#0 a#17#05:53:00#30 d#1#06:27:00#0 ',\n",
       " 'C5511 COMMUTER 200 LPPL X1 : c#0#05:51:00#0 a#12#05:56:00#30 d#1#06:30:00#0 ',\n",
       " 'C5521 COMMUTER 200 LPPL X1 : c#0#05:58:00#0 a#15#06:03:00#30 d#1#06:37:00#0 ',\n",
       " 'D5818 COMMUTER 200 LPPL X1 : c#0#06:01:00#0 a#5#06:06:00#30 i#2#06:43:00#0 ',\n",
       " 'G1103 COMMUTER 300 LPPLLPPL X1 : c#0#06:18:00#0 a#5#06:23:00#30 b#1#06:58:00#0 ',\n",
       " 'D7019 COMMUTER 200 LPPL X1 : c#0#06:25:00#0 a#11#06:30:00#30 d#1#07:04:00#0 ',\n",
       " 'G258 COMMUTER 300 LPPLLPPL X1 : c#0#06:28:00#0 a#5#06:33:00#30 e#2#07:13:00#0 ',\n",
       " 'G431 COMMUTER 300 LPPLLPPL X1 : c#0#06:31:00#0 a#10#06:36:00#30 b#1#07:11:00#0 ',\n",
       " 'G2626 COMMUTER 300 LPPLLPPL X1 : c#0#06:33:00#0 a#3#06:38:00#30 e#2#07:18:00#0 ',\n",
       " 'D7003 COMMUTER 200 LPPL X1 : c#0#06:40:00#0 a#20#06:45:00#30 d#1#07:19:00#0 ',\n",
       " 'G3237 COMMUTER 300 LPPLLPPL X1 : c#0#06:45:00#0 a#16#06:50:00#30 d#1#07:24:00#0 ',\n",
       " 'G1001 COMMUTER 300 LPPLLPPL X1 : c#0#06:50:00#0 a#11#06:55:00#30 d#1#07:29:00#0 ',\n",
       " 'D5822 COMMUTER 200 LPPL X1 : c#0#06:53:00#0 a#5#06:58:00#30 i#2#07:35:00#0 ',\n",
       " 'G2035 COMMUTER 300 LPPLLPPL X1 : c#0#06:55:00#0 a#0#07:00:00#30 d#1#07:34:00#0 ',\n",
       " 'D366 COMMUTER 200 LPPL X1 : c#0#07:00:00#0 a#4#07:05:00#30 i#2#07:42:00#0 ',\n",
       " 'G1105 COMMUTER 300 LPPLLPPL X1 : c#0#07:02:00#0 a#5#07:07:00#30 b#1#07:42:00#0 ',\n",
       " 'G2703 COMMUTER 300 LPPLLPPL X1 : c#0#07:03:00#0 a#14#07:08:00#30 d#1#07:42:00#0 ',\n",
       " 'G66 COMMUTER 300 LPPLLPPL X1 : c#0#07:05:00#0 a#1#07:10:00#30 e#2#07:50:00#0 ',\n",
       " 'G1278 COMMUTER 300 LPPLLPPL X1 : c#0#07:15:00#0 a#4#07:20:00#30 e#2#08:00:00#0 ',\n",
       " 'D7005 COMMUTER 200 LPPL X1 : c#0#07:18:00#0 a#12#07:23:00#30 d#1#07:57:00#0 ',\n",
       " 'G1003 COMMUTER 300 LPPLLPPL X1 : c#0#07:20:00#0 a#11#07:25:00#30 d#1#07:59:00#0 ',\n",
       " 'G1722 COMMUTER 300 LPPLLPPL X1 : c#0#07:25:00#0 a#6#07:30:00#30 f#2#08:10:00#0 ',\n",
       " 'G2705 COMMUTER 300 LPPLLPPL X1 : c#0#07:25:00#0 a#18#07:30:00#30 d#1#08:04:00#0 ',\n",
       " 'G2817 COMMUTER 300 LPPLLPPL X1 : c#0#07:30:00#0 a#13#07:35:00#30 f#2#08:15:00#0 ',\n",
       " 'G522 COMMUTER 300 LPPLLPPL X1 : c#0#07:32:00#0 a#5#07:37:00#30 e#2#08:17:00#0 ',\n",
       " 'D3395 COMMUTER 200 LPPL X1 : c#0#07:36:00#0 a#18#07:41:00#30 d#1#08:15:00#0 ',\n",
       " 'G1005 COMMUTER 300 LPPLLPPL X1 : c#0#07:37:00#0 a#10#07:42:00#30 d#1#08:16:00#0 ',\n",
       " 'D5836 COMMUTER 200 LPPL X1 : c#0#07:45:00#0 a#4#07:50:00#30 i#2#08:27:00#0 ',\n",
       " 'G1738 COMMUTER 300 LPPLLPPL X1 : c#0#07:50:00#0 a#4#07:55:00#30 f#2#08:35:00#0 ',\n",
       " 'G1107 COMMUTER 300 LPPLLPPL X1 : c#0#07:51:00#0 a#7#07:56:00#30 b#1#08:31:00#0 ',\n",
       " 'G3248 COMMUTER 300 LPPLLPPL X1 : c#0#07:55:00#0 a#5#08:00:00#30 d#1#08:34:00#0 ',\n",
       " 'D7007 COMMUTER 200 LPPL X1 : c#0#08:01:00#0 a#12#08:06:00#30 d#1#08:40:00#0 ',\n",
       " 'G68 COMMUTER 300 LPPLLPPL X1 : c#0#08:01:00#0 a#0#08:06:00#30 e#2#08:46:00#0 ',\n",
       " 'G1525 COMMUTER 300 LPPLLPPL X1 : c#0#08:06:00#0 a#10#08:11:00#30 b#1#08:46:00#0 ',\n",
       " 'G2082 COMMUTER 300 LPPLLPPL X1 : c#0#08:11:00#0 a#0#08:16:00#30 e#2#08:56:00#0 ',\n",
       " 'D5786 COMMUTER 200 LPPL X1 : d#2#08:16:00#0 a#17#08:20:00#6 i#2#08:33:00#0 ',\n",
       " 'D618 COMMUTER 200 LPPL X1 : c#0#08:19:00#0 a#15#08:24:00#30 i#2#09:01:00#0 ',\n",
       " 'D7002 COMMUTER 200 LPPL X1 : d#2#08:21:00#0 a#0#08:25:00#30 c#0#09:00:00#0 ',\n",
       " 'D7011 COMMUTER 200 LPPL X1 : c#0#08:20:00#0 a#13#08:25:00#30 d#1#08:59:00#0 ',\n",
       " 'D7021 COMMUTER 200 LPPL X1 : c#0#08:20:00#0 a#15#08:25:00#30 d#1#08:59:00#0 ',\n",
       " 'G881 COMMUTER 300 LPPLLPPL X1 : c#0#08:25:00#0 a#13#08:30:00#30 d#1#09:04:00#0 ',\n",
       " 'D3277 COMMUTER 200 LPPL X1 : c#0#08:27:00#0 a#16#08:32:00#30 d#1#09:06:00#0 ',\n",
       " 'G1109 COMMUTER 300 LPPLLPPL X1 : c#0#08:30:00#0 a#11#08:35:00#30 b#1#09:10:00#0 ',\n",
       " 'G2039 COMMUTER 300 LPPLLPPL X1 : c#0#08:30:00#0 a#11#08:35:00#30 d#1#09:09:00#0 ',\n",
       " 'G502 COMMUTER 300 LPPLLPPL X1 : b#2#08:30:00#0 a#7#08:35:00#6 e#2#08:51:00#0 ',\n",
       " 'G584 COMMUTER 300 LPPLLPPL X1 : c#0#08:36:00#0 a#6#08:41:00#30 d#1#09:15:00#0 ',\n",
       " 'D5782 COMMUTER 200 LPPL X1 : d#2#08:39:00#0 a#18#08:43:00#5 i#2#08:55:00#0 ',\n",
       " 'G1290 COMMUTER 300 LPPLLPPL X1 : b#2#08:43:00#0 a#1#08:48:00#3 e#2#09:01:00#0 ',\n",
       " 'G3255 COMMUTER 300 LPPLLPPL X1 : c#0#08:45:00#0 a#20#08:50:00#30 d#1#09:24:00#0 ',\n",
       " 'G1216 COMMUTER 300 LPPLLPPL X1 : b#2#08:47:00#0 a#8#08:52:00#4 e#2#09:06:00#0 ',\n",
       " 'D5826 COMMUTER 200 LPPL X1 : c#0#08:52:00#0 a#6#08:57:00#30 i#2#09:34:00#0 ',\n",
       " 'G504 COMMUTER 300 LPPLLPPL X1 : b#2#08:55:00#0 a#4#09:00:00#6 e#2#09:16:00#0 ',\n",
       " 'G849 COMMUTER 300 LPPLLPPL X1 : c#0#08:55:00#0 a#16#09:00:00#30 d#1#09:34:00#0 ',\n",
       " 'G1017 COMMUTER 300 LPPLLPPL X1 : d#2#09:01:00#0 a#4#09:05:00#22 d#1#09:31:00#0 ',\n",
       " 'G1135 COMMUTER 300 LPPLLPPL X1 : h#1#09:00:00#0 a#13#09:05:00#5 b#1#09:15:00#0 ',\n",
       " 'G2351 COMMUTER 300 LPPLLPPL X1 : c#0#09:04:00#0 a#11#09:09:00#30 d#1#09:43:00#0 ',\n",
       " 'D3263 COMMUTER 200 LPPL X1 : i#1#09:04:00#0 a#16#09:11:00#4 d#1#09:19:00#0 ',\n",
       " 'G1718 COMMUTER 300 LPPLLPPL X1 : e#1#09:01:00#0 a#11#09:11:00#21 f#2#09:42:00#0 ',\n",
       " 'G856 COMMUTER 300 LPPLLPPL X1 : c#0#09:07:00#0 a#5#09:12:00#30 e#2#09:52:00#0 ',\n",
       " 'G892 COMMUTER 300 LPPLLPPL X1 : d#2#09:08:00#0 a#1#09:12:00#4 e#2#09:26:00#0 ',\n",
       " 'G1131 COMMUTER 300 LPPLLPPL X1 : h#1#09:10:00#0 a#7#09:15:00#6 b#1#09:26:00#0 ',\n",
       " 'G84 COMMUTER 300 LPPLLPPL X1 : b#2#09:13:00#0 a#6#09:18:00#3 e#2#09:31:00#0 ',\n",
       " 'G2281 COMMUTER 300 LPPLLPPL X1 : e#1#09:10:00#0 a#13#09:20:00#3 d#1#09:27:00#0 ',\n",
       " 'D5774 COMMUTER 200 LPPL X1 : d#2#09:17:00#0 a#13#09:21:00#8 i#2#09:36:00#0 ',\n",
       " 'G1643 COMMUTER 300 LPPLLPPL X1 : c#0#09:16:00#0 a#12#09:21:00#30 d#1#09:55:00#0 ',\n",
       " 'D2180D2181 COMMUTER 200 LPPL X1 : d#2#09:24:00#0 a#20#09:28:00#56 d#1#10:28:00#0 ',\n",
       " 'G809 COMMUTER 300 LPPLLPPL X1 : e#1#09:20:00#0 a#8#09:30:00#3 b#1#09:38:00#0 ',\n",
       " 'D2161 COMMUTER 200 LPPL X1 : c#0#09:27:00#0 a#17#09:32:00#30 f#2#10:12:00#0 ',\n",
       " 'D2175 COMMUTER 200 LPPL X1 : i#1#09:27:00#0 a#12#09:34:00#10 d#1#09:48:00#0 ',\n",
       " 'G1778 COMMUTER 300 LPPLLPPL X1 : b#2#09:29:00#0 a#5#09:34:00#3 f#2#09:47:00#0 ',\n",
       " 'G883 COMMUTER 300 LPPLLPPL X1 : c#0#09:32:00#0 a#7#09:37:00#30 d#1#10:11:00#0 ',\n",
       " 'G531 COMMUTER 300 LPPLLPPL X1 : e#1#09:28:00#0 a#9#09:38:00#5 d#1#09:47:00#0 ',\n",
       " 'G288 COMMUTER 300 LPPLLPPL X1 : b#2#09:35:00#0 a#2#09:40:00#7 e#2#09:57:00#0 ',\n",
       " 'D3044 COMMUTER 200 LPPL X1 : c#0#09:40:00#0 a#6#09:45:00#30 f#2#10:25:00#0 ',\n",
       " 'G524 COMMUTER 300 LPPLLPPL X1 : c#0#09:45:00#0 a#5#09:50:00#30 e#2#10:30:00#0 ',\n",
       " 'G3119 COMMUTER 300 LPPLLPPL X1 : e#1#09:43:00#0 a#13#09:53:00#19 f#2#10:22:00#0 ',\n",
       " 'G1994 COMMUTER 300 LPPLLPPL X1 : e#1#09:50:00#0 a#0#10:00:00#7 d#1#10:11:00#0 ',\n",
       " 'G2707 COMMUTER 300 LPPLLPPL X1 : c#0#09:56:00#0 a#16#10:01:00#30 d#1#10:35:00#0 ',\n",
       " 'G640 COMMUTER 300 LPPLLPPL X1 : d#2#09:57:00#0 a#2#10:01:00#4 e#2#10:15:00#0 ',\n",
       " 'G1848 COMMUTER 300 LPPLLPPL X1 : b#2#09:57:00#0 a#6#10:02:00#8 e#2#10:20:00#0 ',\n",
       " 'G439 COMMUTER 300 LPPLLPPL X1 : e#1#09:54:00#0 a#9#10:04:00#13 b#1#10:22:00#0 ',\n",
       " 'D3252 COMMUTER 200 LPPL X1 : d#2#10:06:00#0 a#15#10:10:00#10 i#2#10:27:00#0 ',\n",
       " 'D2169 COMMUTER 200 LPPL X1 : c#0#10:08:00#0 a#15#10:13:00#30 d#1#10:47:00#0 ',\n",
       " 'G1027 COMMUTER 300 LPPLLPPL X1 : h#1#10:09:00#0 a#12#10:14:00#8 d#1#10:26:00#0 ',\n",
       " 'G294 COMMUTER 300 LPPLLPPL X1 : b#2#10:09:00#0 a#5#10:14:00#11 e#2#10:35:00#0 ',\n",
       " 'G637 COMMUTER 300 LPPLLPPL X1 : f#1#10:08:00#0 a#8#10:18:00#9 b#1#10:32:00#0 ',\n",
       " 'D3287 COMMUTER 200 LPPL X1 : c#0#10:15:00#0 a#18#10:20:00#30 d#1#10:54:00#0 ',\n",
       " 'G506 COMMUTER 300 LPPLLPPL X1 : b#2#10:16:00#0 a#6#10:21:00#17 e#2#10:48:00#0 ',\n",
       " 'G2045 COMMUTER 300 LPPLLPPL X1 : e#1#10:15:00#0 a#11#10:25:00#11 d#1#10:40:00#0 ',\n",
       " 'D2156 COMMUTER 200 LPPL X1 : d#2#10:22:00#0 a#13#10:26:00#4 i#2#10:37:00#0 ',\n",
       " 'G812 COMMUTER 300 LPPLLPPL X1 : b#2#10:25:00#0 a#2#10:30:00#3 e#2#10:43:00#0 ',\n",
       " 'G541 COMMUTER 300 LPPLLPPL X1 : e#1#10:21:00#0 a#11#10:31:00#7 b#1#10:43:00#0 ',\n",
       " 'G864 COMMUTER 300 LPPLLPPL X1 : b#2#10:29:00#0 a#6#10:34:00#9 e#2#10:53:00#0 ',\n",
       " 'G1741 COMMUTER 300 LPPLLPPL X1 : e#1#10:28:00#0 a#13#10:38:00#5 b#1#10:48:00#0 ',\n",
       " 'G1730 COMMUTER 300 LPPLLPPL X1 : d#2#10:35:00#0 a#4#10:39:00#9 f#2#10:58:00#0 ',\n",
       " 'G1170 COMMUTER 300 LPPLLPPL X1 : b#2#10:39:00#0 a#6#10:44:00#17 f#2#11:11:00#0 ',\n",
       " 'G1786 COMMUTER 300 LPPLLPPL X1 : f#1#10:37:00#0 a#0#10:47:00#30 c#0#11:22:00#0 ',\n",
       " 'G1554 COMMUTER 300 LPPLLPPL X1 : b#2#10:44:00#0 a#2#10:49:00#7 e#2#11:06:00#0 ',\n",
       " 'G1185 COMMUTER 300 LPPLLPPL X1 : e#1#10:41:00#0 a#8#10:51:00#6 d#1#11:01:00#0 ',\n",
       " 'G1535 COMMUTER 300 LPPLLPPL X1 : e#1#10:47:00#0 a#12#10:57:00#12 b#1#11:14:00#0 ',\n",
       " 'G276 COMMUTER 300 LPPLLPPL X1 : b#2#10:56:00#0 a#6#11:01:00#5 e#2#11:16:00#0 ',\n",
       " 'G71 COMMUTER 300 LPPLLPPL X1 : e#1#10:51:00#0 a#11#11:01:00#3 b#1#11:09:00#0 ',\n",
       " 'G649 COMMUTER 300 LPPLLPPL X1 : f#1#10:56:00#0 a#11#11:06:00#8 b#1#11:19:00#0 ',\n",
       " 'G1136 COMMUTER 300 LPPLLPPL X1 : b#2#11:02:00#0 a#8#11:07:00#9 h#2#11:21:00#0 ',\n",
       " 'D5773 COMMUTER 200 LPPL X1 : i#1#11:02:00#0 a#18#11:09:00#11 d#1#11:24:00#0 ',\n",
       " 'G1773 COMMUTER 300 LPPLLPPL X1 : f#1#11:01:00#0 a#11#11:11:00#8 b#1#11:24:00#0 ',\n",
       " 'G692 COMMUTER 300 LPPLLPPL X1 : c#0#11:06:00#0 a#1#11:11:00#30 e#2#11:51:00#0 ',\n",
       " 'G1102G1111 COMMUTER 300 LPPLLPPL X1 : b#2#11:07:00#0 a#0#11:12:00#33 b#1#11:50:00#0 ',\n",
       " 'G647 COMMUTER 300 LPPLLPPL X1 : e#1#11:06:00#0 a#13#11:16:00#9 d#1#11:29:00#0 ',\n",
       " 'G834 COMMUTER 300 LPPLLPPL X1 : b#2#11:11:00#0 a#4#11:16:00#6 e#2#11:32:00#0 ',\n",
       " 'G852 COMMUTER 300 LPPLLPPL X1 : c#0#11:11:00#0 a#6#11:16:00#30 e#2#11:56:00#0 ',\n",
       " 'G1748 COMMUTER 300 LPPLLPPL X1 : b#2#11:15:00#0 a#4#11:20:00#7 f#2#11:37:00#0 ',\n",
       " 'G1031 COMMUTER 300 LPPLLPPL X1 : h#1#11:16:00#0 a#12#11:21:00#5 d#1#11:30:00#0 ',\n",
       " 'D2236 COMMUTER 200 LPPL X1 : d#2#11:20:00#0 a#15#11:24:00#8 i#2#11:39:00#0 ',\n",
       " 'G885 COMMUTER 300 LPPLLPPL X1 : c#0#11:20:00#0 a#13#11:25:00#30 b#1#12:00:00#0 ',\n",
       " 'G1163 COMMUTER 300 LPPLLPPL X1 : e#1#11:20:00#0 a#10#11:30:00#4 b#1#11:39:00#0 ',\n",
       " 'G1792 COMMUTER 300 LPPLLPPL X1 : c#0#11:26:00#0 a#5#11:31:00#30 d#1#12:05:00#0 ',\n",
       " 'G1545 COMMUTER 300 LPPLLPPL X1 : d#2#11:30:00#0 a#12#11:34:00#5 b#1#11:44:00#0 ',\n",
       " 'G1023 COMMUTER 300 LPPLLPPL X1 : d#2#11:34:00#0 a#0#11:38:00#30 c#0#12:13:00#0 ',\n",
       " 'G3219 COMMUTER 300 LPPLLPPL X1 : e#1#11:29:00#0 a#0#11:39:00#30 c#0#12:14:00#0 ',\n",
       " 'D3255 COMMUTER 200 LPPL X1 : i#1#11:33:00#0 a#19#11:40:00#4 d#1#11:48:00#0 ',\n",
       " 'G1007 COMMUTER 300 LPPLLPPL X1 : c#0#11:36:00#0 a#10#11:41:00#30 d#1#12:15:00#0 ',\n",
       " 'G1744 COMMUTER 300 LPPLLPPL X1 : b#2#11:38:00#0 a#5#11:43:00#13 f#2#12:06:00#0 ',\n",
       " 'G1539 COMMUTER 300 LPPLLPPL X1 : f#1#11:34:00#0 a#10#11:44:00#6 b#1#11:55:00#0 ',\n",
       " 'G542 COMMUTER 300 LPPLLPPL X1 : b#2#11:42:00#0 a#6#11:47:00#4 e#2#12:01:00#0 ',\n",
       " 'G867 COMMUTER 300 LPPLLPPL X1 : e#1#11:39:00#0 a#13#11:49:00#4 d#1#11:57:00#0 ',\n",
       " 'G1155 COMMUTER 300 LPPLLPPL X1 : h#1#11:49:00#0 a#8#11:54:00#6 b#1#12:05:00#0 ',\n",
       " 'D7012D7013 COMMUTER 200 LPPL X1 : d#2#11:55:00#0 a#14#11:59:00#18 d#1#12:21:00#0 ',\n",
       " 'D7022D7023 COMMUTER 200 LPPL X1 : d#2#11:55:00#0 a#14#11:59:00#18 d#1#12:21:00#0 ',\n",
       " 'G2295 COMMUTER 300 LPPLLPPL X1 : e#1#11:49:00#0 a#13#11:59:00#6 d#1#12:09:00#0 ',\n",
       " 'G2056 COMMUTER 300 LPPLLPPL X1 : b#2#11:58:00#0 a#6#12:03:00#3 e#2#12:16:00#0 ',\n",
       " 'G77 COMMUTER 300 LPPLLPPL X1 : e#1#11:53:00#0 a#11#12:03:00#3 b#1#12:11:00#0 ',\n",
       " 'G336 COMMUTER 300 LPPLLPPL X1 : d#2#12:04:00#0 a#4#12:08:00#12 e#2#12:30:00#0 ',\n",
       " 'G891 COMMUTER 300 LPPLLPPL X1 : e#1#11:58:00#0 a#13#12:08:00#3 d#1#12:15:00#0 ',\n",
       " 'G82 COMMUTER 300 LPPLLPPL X1 : d#2#12:08:00#0 a#1#12:12:00#3 e#2#12:25:00#0 ',\n",
       " 'G423 COMMUTER 300 LPPLLPPL X1 : e#1#12:04:00#0 a#13#12:14:00#3 b#1#12:22:00#0 ',\n",
       " 'G1312 COMMUTER 300 LPPLLPPL X1 : d#2#12:14:00#0 a#6#12:18:00#7 f#2#12:35:00#0 ',\n",
       " 'G1139 COMMUTER 300 LPPLLPPL X1 : h#1#12:14:00#0 a#7#12:19:00#6 b#1#12:30:00#0 ',\n",
       " 'D2183 COMMUTER 200 LPPL X1 : i#1#12:19:00#0 a#13#12:26:00#4 d#1#12:34:00#0 ',\n",
       " 'D2242 COMMUTER 200 LPPL X1 : d#2#12:25:00#0 a#14#12:29:00#6 i#2#12:42:00#0 ',\n",
       " 'G1549 COMMUTER 300 LPPLLPPL X1 : f#1#12:20:00#0 a#9#12:30:00#5 b#1#12:40:00#0 ',\n",
       " 'G2387 COMMUTER 300 LPPLLPPL X1 : e#1#12:24:00#0 a#13#12:34:00#5 d#1#12:43:00#0 ',\n",
       " 'D2375 COMMUTER 200 LPPL X1 : i#1#12:28:00#0 a#19#12:35:00#12 d#1#12:51:00#0 ',\n",
       " 'G814 COMMUTER 300 LPPLLPPL X1 : b#2#12:30:00#0 a#3#12:35:00#3 e#2#12:48:00#0 ',\n",
       " 'G3124G3123 COMMUTER 300 LPPLLPPL X1 : f#1#12:26:00#0 a#17#12:36:00#43 f#2#13:29:00#0 ',\n",
       " 'G482 COMMUTER 300 LPPLLPPL X1 : b#2#12:35:00#0 a#5#12:40:00#5 e#2#12:55:00#0 ',\n",
       " 'G1537 COMMUTER 300 LPPLLPPL X1 : e#1#12:34:00#0 a#9#12:44:00#4 b#1#12:53:00#0 ',\n",
       " 'G1189 COMMUTER 300 LPPLLPPL X1 : e#1#12:39:00#0 a#12#12:49:00#7 d#1#13:00:00#0 ',\n",
       " 'G65 COMMUTER 300 LPPLLPPL X1 : e#1#12:43:00#0 a#0#12:53:00#30 c#0#13:28:00#0 ',\n",
       " 'G1184 COMMUTER 300 LPPLLPPL X1 : b#2#12:52:00#0 a#6#12:57:00#7 d#1#13:08:00#0 ',\n",
       " 'G93 COMMUTER 300 LPPLLPPL X1 : e#1#12:48:00#0 a#13#12:58:00#3 b#1#13:06:00#0 ',\n",
       " 'D3273 COMMUTER 200 LPPL X1 : i#1#12:52:00#0 a#19#12:59:00#8 d#1#13:11:00#0 ',\n",
       " 'G1310 COMMUTER 300 LPPLLPPL X1 : d#2#12:59:00#0 a#8#13:03:00#6 e#2#13:19:00#0 ',\n",
       " 'G595G678 COMMUTER 300 LPPLLPPL X1 : d#2#12:59:00#0 a#5#13:03:00#26 d#1#13:33:00#0 ',\n",
       " 'G878 COMMUTER 300 LPPLLPPL X1 : b#2#13:02:00#0 a#4#13:07:00#7 e#2#13:24:00#0 ',\n",
       " 'G485 COMMUTER 300 LPPLLPPL X1 : e#1#12:58:00#0 a#11#13:08:00#3 d#1#13:15:00#0 ',\n",
       " 'G70 COMMUTER 300 LPPLLPPL X1 : c#0#13:05:00#0 a#3#13:10:00#30 e#2#13:50:00#0 ',\n",
       " 'G335 COMMUTER 300 LPPLLPPL X1 : e#1#13:02:00#0 a#11#13:12:00#4 d#1#13:20:00#0 ',\n",
       " 'G436G435 COMMUTER 300 LPPLLPPL X1 : b#2#13:07:00#0 a#5#13:12:00#23 b#1#13:40:00#0 ',\n",
       " 'G1002 COMMUTER 300 LPPLLPPL X1 : d#2#13:16:00#0 a#0#13:20:00#30 c#0#13:55:00#0 ',\n",
       " 'G421 COMMUTER 300 LPPLLPPL X1 : e#1#13:11:00#0 a#11#13:21:00#3 b#1#13:29:00#0 ',\n",
       " 'G1004G1009 COMMUTER 300 LPPLLPPL X1 : d#2#13:21:00#0 a#8#13:25:00#15 c#0#13:45:00#0 ',\n",
       " 'G2286G2285 COMMUTER 300 LPPLLPPL X1 : d#2#13:21:00#0 a#18#13:25:00#21 d#1#13:50:00#0 ',\n",
       " 'G587 COMMUTER 300 LPPLLPPL X1 : f#1#13:16:00#0 a#11#13:26:00#4 b#1#13:35:00#0 ',\n",
       " 'D3289 COMMUTER 200 LPPL X1 : c#0#13:25:00#0 a#17#13:30:00#30 d#1#14:04:00#0 ',\n",
       " 'G1186 COMMUTER 300 LPPLLPPL X1 : d#2#13:27:00#0 a#5#13:31:00#14 e#2#13:55:00#0 ',\n",
       " 'G676 COMMUTER 300 LPPLLPPL X1 : f#1#13:21:00#0 a#8#13:31:00#48 f#2#14:29:00#0 ',\n",
       " 'G677 COMMUTER 300 LPPLLPPL X1 : f#1#13:21:00#0 a#0#13:31:00#30 c#0#14:06:00#0 ',\n",
       " 'G1175 COMMUTER 300 LPPLLPPL X1 : c#0#13:33:00#0 a#11#13:38:00#30 d#1#14:12:00#0 ',\n",
       " 'G465 COMMUTER 300 LPPLLPPL X1 : e#1#13:29:00#0 a#11#13:39:00#6 b#1#13:50:00#0 ',\n",
       " 'D3282 COMMUTER 200 LPPL X1 : d#2#13:36:00#0 a#0#13:40:00#30 c#0#14:15:00#0 ',\n",
       " 'G279 COMMUTER 300 LPPLLPPL X1 : e#1#13:35:00#0 a#11#13:45:00#18 d#1#14:07:00#0 ',\n",
       " 'G534 COMMUTER 300 LPPLLPPL X1 : b#2#13:41:00#0 a#5#13:46:00#4 e#2#14:00:00#0 ',\n",
       " 'C5626 COMMUTER 200 LPPL X1 : d#2#13:44:00#0 a#0#13:48:00#30 c#0#14:23:00#0 ',\n",
       " 'G813 COMMUTER 300 LPPLLPPL X1 : e#1#13:40:00#0 a#12#13:50:00#3 d#1#13:57:00#0 ',\n",
       " 'G544 COMMUTER 300 LPPLLPPL X1 : b#2#13:49:00#0 a#6#13:54:00#3 e#2#14:07:00#0 ',\n",
       " 'G79 COMMUTER 300 LPPLLPPL X1 : e#1#13:45:00#0 a#12#13:55:00#3 b#1#14:03:00#0 ',\n",
       " 'G2388 COMMUTER 300 LPPLLPPL X1 : d#2#14:00:00#0 a#2#14:04:00#3 e#2#14:17:00#0 ',\n",
       " 'G590G600 COMMUTER 300 LPPLLPPL X1 : d#2#14:00:00#0 a#5#14:04:00#60 f#2#15:14:00#0 ',\n",
       " 'G1742 COMMUTER 300 LPPLLPPL X1 : b#2#14:00:00#0 a#6#14:05:00#9 e#2#14:24:00#0 ',\n",
       " 'G1648G1647 COMMUTER 300 LPPLLPPL X1 : d#2#14:03:00#0 a#15#14:07:00#20 d#1#14:31:00#0 ',\n",
       " 'G363G366 COMMUTER 300 LPPLLPPL X1 : e#1#14:00:00#0 a#7#14:10:00#31 e#2#14:51:00#0 ',\n",
       " 'G2689 COMMUTER 300 LPPLLPPL X1 : f#1#14:04:00#0 a#13#14:14:00#4 b#1#14:23:00#0 ',\n",
       " 'D2182 COMMUTER 200 LPPL X1 : d#2#14:12:00#0 a#0#14:16:00#30 c#0#14:51:00#0 ',\n",
       " 'G1006 COMMUTER 300 LPPLLPPL X1 : d#2#14:13:00#0 a#9#14:17:00#30 d#1#14:51:00#0 ',\n",
       " 'G1311 COMMUTER 300 LPPLLPPL X1 : f#1#14:10:00#0 a#9#14:20:00#4 d#1#14:28:00#0 ',\n",
       " 'G822 COMMUTER 300 LPPLLPPL X1 : d#2#14:18:00#0 a#5#14:22:00#3 e#2#14:35:00#0 ',\n",
       " 'D3265D3266 COMMUTER 200 LPPL X1 : d#2#14:21:00#0 a#16#14:25:00#30 d#1#14:59:00#0 ',\n",
       " 'G501 COMMUTER 300 LPPLLPPL X1 : e#1#14:16:00#0 a#11#14:26:00#6 b#1#14:37:00#0 ',\n",
       " 'G342 COMMUTER 300 LPPLLPPL X1 : d#2#14:23:00#0 a#4#14:27:00#19 e#2#14:56:00#0 ',\n",
       " 'G341 COMMUTER 300 LPPLLPPL X1 : e#1#14:21:00#0 a#12#14:31:00#6 d#1#14:41:00#0 ',\n",
       " 'G74 COMMUTER 300 LPPLLPPL X1 : b#2#14:28:00#0 a#1#14:33:00#3 e#2#14:46:00#0 ',\n",
       " 'G2066 COMMUTER 300 LPPLLPPL X1 : b#2#14:32:00#0 a#6#14:37:00#14 e#2#15:01:00#0 ',\n",
       " 'G2065 COMMUTER 300 LPPLLPPL X1 : e#1#14:28:00#0 a#12#14:38:00#4 b#1#14:47:00#0 ',\n",
       " 'G2710G2709 COMMUTER 300 LPPLLPPL X1 : d#2#14:36:00#0 a#20#14:40:00#30 d#1#15:14:00#0 ',\n",
       " 'G1104 COMMUTER 300 LPPLLPPL X1 : b#2#14:37:00#0 a#0#14:42:00#30 c#0#15:17:00#0 ',\n",
       " 'G821 COMMUTER 300 LPPLLPPL X1 : e#1#14:34:00#0 a#13#14:44:00#8 d#1#14:56:00#0 ',\n",
       " 'G306 COMMUTER 300 LPPLLPPL X1 : b#2#14:42:00#0 a#3#14:47:00#9 e#2#15:06:00#0 ',\n",
       " 'D2232 COMMUTER 200 LPPL X1 : d#2#14:49:00#0 a#14#14:53:00#5 i#2#15:05:00#0 ',\n",
       " 'G401 COMMUTER 300 LPPLLPPL X1 : e#1#14:43:00#0 a#11#14:53:00#4 b#1#15:02:00#0 ',\n",
       " 'G275 COMMUTER 300 LPPLLPPL X1 : e#1#14:47:00#0 a#11#14:57:00#5 b#1#15:07:00#0 ',\n",
       " 'C5625 COMMUTER 200 LPPL X1 : c#0#14:53:00#0 a#13#14:58:00#30 d#1#15:32:00#0 ',\n",
       " 'G826 COMMUTER 300 LPPLLPPL X1 : d#2#14:55:00#0 a#6#14:59:00#15 e#2#15:24:00#0 ',\n",
       " 'G1774 COMMUTER 300 LPPLLPPL X1 : b#2#14:59:00#0 a#4#15:04:00#5 f#2#15:19:00#0 ',\n",
       " 'G73 COMMUTER 300 LPPLLPPL X1 : e#1#14:55:00#0 a#12#15:05:00#3 b#1#15:13:00#0 ',\n",
       " 'G2046 COMMUTER 300 LPPLLPPL X1 : d#2#15:03:00#0 a#2#15:07:00#12 e#2#15:29:00#0 ',\n",
       " 'G1106 COMMUTER 300 LPPLLPPL X1 : b#2#15:04:00#0 a#9#15:09:00#29 b#1#15:43:00#0 ',\n",
       " 'D2226 COMMUTER 200 LPPL X1 : d#2#15:08:00#0 a#15#15:12:00#6 i#2#15:25:00#0 ',\n",
       " 'G466 COMMUTER 300 LPPLLPPL X1 : b#2#15:08:00#0 a#5#15:13:00#11 e#2#15:34:00#0 ',\n",
       " 'G689 COMMUTER 300 LPPLLPPL X1 : e#1#15:04:00#0 a#0#15:14:00#4 b#1#15:23:00#0 ',\n",
       " 'D5832 COMMUTER 200 LPPL X1 : c#0#15:10:00#0 a#14#15:15:00#30 i#2#15:52:00#0 ',\n",
       " 'D2231 COMMUTER 200 LPPL X1 : i#1#15:12:00#0 a#18#15:19:00#5 d#1#15:28:00#0 ',\n",
       " 'G1040 COMMUTER 300 LPPLLPPL X1 : d#2#15:15:00#0 a#5#15:19:00#10 h#2#15:34:00#0 ',\n",
       " 'G2294G2293 COMMUTER 300 LPPLLPPL X1 : d#2#15:21:00#0 a#15#15:25:00#20 d#1#15:49:00#0 ',\n",
       " 'G690 COMMUTER 300 LPPLLPPL X1 : b#2#15:22:00#0 a#5#15:27:00#17 e#2#15:54:00#0 ',\n",
       " 'G863 COMMUTER 300 LPPLLPPL X1 : e#1#15:19:00#0 a#7#15:29:00#4 b#1#15:38:00#0 ',\n",
       " 'G80 COMMUTER 300 LPPLLPPL X1 : d#2#15:27:00#0 a#0#15:31:00#3 e#2#15:44:00#0 ',\n",
       " 'D2376 COMMUTER 200 LPPL X1 : d#2#15:28:00#0 a#18#15:32:00#5 i#2#15:44:00#0 ',\n",
       " 'G72 COMMUTER 300 LPPLLPPL X1 : b#2#15:31:00#0 a#6#15:36:00#3 e#2#15:49:00#0 ',\n",
       " 'G1039 COMMUTER 300 LPPLLPPL X1 : h#1#15:34:00#0 a#11#15:39:00#4 d#1#15:47:00#0 ',\n",
       " 'G1546 COMMUTER 300 LPPLLPPL X1 : b#2#15:36:00#0 a#8#15:41:00#8 d#1#15:53:00#0 ',\n",
       " 'D7014D7015 COMMUTER 200 LPPL X1 : d#2#15:38:00#0 a#18#15:42:00#25 d#1#16:11:00#0 ',\n",
       " 'D7024D7025 COMMUTER 200 LPPL X1 : d#2#15:38:00#0 a#17#15:42:00#25 d#1#16:11:00#0 ',\n",
       " 'G533 COMMUTER 300 LPPLLPPL X1 : e#1#15:33:00#0 a#10#15:43:00#6 b#1#15:54:00#0 ',\n",
       " 'D2225 COMMUTER 200 LPPL X1 : i#1#15:38:00#0 a#19#15:45:00#10 d#1#15:59:00#0 ',\n",
       " 'G838 COMMUTER 300 LPPLLPPL X1 : b#2#15:41:00#0 a#4#15:46:00#8 e#2#16:04:00#0 ',\n",
       " 'G825 COMMUTER 300 LPPLLPPL X1 : e#1#15:38:00#0 a#11#15:48:00#7 d#1#15:59:00#0 ',\n",
       " 'G1309 COMMUTER 300 LPPLLPPL X1 : e#1#15:42:00#0 a#11#15:52:00#8 d#1#16:04:00#0 ',\n",
       " 'G338 COMMUTER 300 LPPLLPPL X1 : b#2#15:47:00#0 a#4#15:52:00#10 e#2#16:12:00#0 ',\n",
       " 'G526 COMMUTER 300 LPPLLPPL X1 : c#0#15:49:00#0 a#1#15:54:00#30 e#2#16:34:00#0 ',\n",
       " 'G893 COMMUTER 300 LPPLLPPL X1 : e#1#15:46:00#0 a#12#15:56:00#3 d#1#16:03:00#0 ',\n",
       " 'G67 COMMUTER 300 LPPLLPPL X1 : e#1#15:50:00#0 a#0#16:00:00#30 c#0#16:35:00#0 ',\n",
       " 'D617 COMMUTER 200 LPPL X1 : i#1#15:54:00#0 a#0#16:01:00#30 c#0#16:36:00#0 ',\n",
       " 'D620 COMMUTER 200 LPPL X1 : i#1#15:54:00#0 a#0#16:01:00#30 c#0#16:36:00#0 ',\n",
       " 'G2712G2711 COMMUTER 300 LPPLLPPL X1 : d#2#16:01:00#0 a#19#16:05:00#28 d#1#16:37:00#0 ',\n",
       " 'G1183 COMMUTER 300 LPPLLPPL X1 : d#2#16:02:00#0 a#11#16:06:00#4 b#1#16:15:00#0 ',\n",
       " 'G422 COMMUTER 300 LPPLLPPL X1 : b#2#16:02:00#0 a#4#16:07:00#3 e#2#16:20:00#0 ',\n",
       " 'G337 COMMUTER 300 LPPLLPPL X1 : e#1#16:01:00#0 a#12#16:11:00#5 b#1#16:21:00#0 ',\n",
       " 'G486 COMMUTER 300 LPPLLPPL X1 : d#2#16:08:00#0 a#6#16:12:00#7 e#2#16:29:00#0 ',\n",
       " 'D3274 COMMUTER 200 LPPL X1 : d#2#16:10:00#0 a#15#16:14:00#3 i#2#16:24:00#0 ',\n",
       " 'G841 COMMUTER 300 LPPLLPPL X1 : e#1#16:05:00#0 a#13#16:15:00#11 b#1#16:31:00#0 ',\n",
       " 'G882 COMMUTER 300 LPPLLPPL X1 : d#2#16:12:00#0 a#0#16:16:00#30 c#0#16:51:00#0 ',\n",
       " 'G543 COMMUTER 300 LPPLLPPL X1 : e#1#16:10:00#0 a#11#16:20:00#11 b#1#16:36:00#0 ',\n",
       " 'G1538 COMMUTER 300 LPPLLPPL X1 : b#2#16:16:00#0 a#5#16:21:00#8 e#2#16:39:00#0 ',\n",
       " 'D2241 COMMUTER 200 LPPL X1 : i#1#16:17:00#0 a#17#16:24:00#4 d#1#16:32:00#0 ',\n",
       " 'G1152 COMMUTER 300 LPPLLPPL X1 : b#2#16:20:00#0 a#4#16:25:00#9 h#2#16:39:00#0 ',\n",
       " 'G305 COMMUTER 300 LPPLLPPL X1 : e#1#16:16:00#0 a#11#16:26:00#10 b#1#16:41:00#0 ',\n",
       " 'D3226D3223 COMMUTER 200 LPPL X1 : d#2#16:26:00#0 a#14#16:30:00#58 d#1#17:32:00#0 ',\n",
       " 'G588 COMMUTER 300 LPPLLPPL X1 : b#2#16:26:00#0 a#4#16:31:00#8 f#2#16:49:00#0 ',\n",
       " 'G424 COMMUTER 300 LPPLLPPL X1 : b#2#16:31:00#0 a#7#16:36:00#16 e#2#17:02:00#0 ',\n",
       " 'G481 COMMUTER 300 LPPLLPPL X1 : e#1#16:26:00#0 a#11#16:36:00#11 b#1#16:52:00#0 ',\n",
       " 'G1021 COMMUTER 300 LPPLLPPL X1 : c#0#16:33:00#0 a#11#16:38:00#30 d#1#17:12:00#0 ',\n",
       " 'G639 COMMUTER 300 LPPLLPPL X1 : e#1#16:31:00#0 a#11#16:41:00#6 d#1#16:51:00#0 ',\n",
       " 'G896 COMMUTER 300 LPPLLPPL X1 : d#2#16:39:00#0 a#1#16:43:00#3 e#2#16:56:00#0 ',\n",
       " 'G1110G1119 COMMUTER 300 LPPLLPPL X1 : b#2#16:41:00#0 a#7#16:46:00#47 b#1#17:38:00#0 ',\n",
       " 'G1191 COMMUTER 300 LPPLLPPL X1 : e#1#16:36:00#0 a#11#16:46:00#6 d#1#16:56:00#0 ',\n",
       " 'G868 COMMUTER 300 LPPLLPPL X1 : d#2#16:45:00#0 a#12#16:49:00#13 e#2#17:12:00#0 ',\n",
       " 'G695 COMMUTER 300 LPPLLPPL X1 : e#1#16:41:00#0 a#12#16:51:00#12 b#1#17:08:00#0 ',\n",
       " 'G842 COMMUTER 300 LPPLLPPL X1 : b#2#16:46:00#0 a#5#16:51:00#6 e#2#17:07:00#0 ',\n",
       " 'D3251 COMMUTER 200 LPPL X1 : i#1#16:46:00#0 a#20#16:53:00#12 d#1#17:09:00#0 ',\n",
       " 'G811 COMMUTER 300 LPPLLPPL X1 : e#1#16:45:00#0 a#12#16:55:00#3 b#1#17:03:00#0 ',\n",
       " 'G1008G1013 COMMUTER 300 LPPLLPPL X1 : d#2#16:53:00#0 a#6#16:57:00#26 d#1#17:27:00#0 ',\n",
       " 'D2166D2165 COMMUTER 200 LPPL X1 : f#1#16:49:00#0 a#18#16:59:00#23 f#2#17:32:00#0 ',\n",
       " 'D2167 COMMUTER 200 LPPL X1 : f#1#16:49:00#0 a#0#16:59:00#30 c#0#17:34:00#0 ',\n",
       " 'G1143 COMMUTER 300 LPPLLPPL X1 : h#1#16:58:00#0 a#11#17:03:00#10 b#1#17:18:00#0 ',\n",
       " 'G340 COMMUTER 300 LPPLLPPL X1 : b#2#16:59:00#0 a#5#17:04:00#3 e#2#17:17:00#0 ',\n",
       " 'G2296 COMMUTER 300 LPPLLPPL X1 : d#2#17:01:00#0 a#1#17:05:00#7 e#2#17:22:00#0 ',\n",
       " 'G1019 COMMUTER 300 LPPLLPPL X1 : c#0#17:03:00#0 a#10#17:08:00#30 d#1#17:42:00#0 ',\n",
       " 'G2055 COMMUTER 300 LPPLLPPL X1 : e#1#16:59:00#0 a#12#17:09:00#9 b#1#17:23:00#0 ',\n",
       " 'G648 COMMUTER 300 LPPLLPPL X1 : d#2#17:10:00#0 a#5#17:14:00#3 e#2#17:27:00#0 ',\n",
       " 'G1176 COMMUTER 300 LPPLLPPL X1 : d#2#17:11:00#0 a#0#17:15:00#30 c#0#17:50:00#0 ',\n",
       " 'G833 COMMUTER 300 LPPLLPPL X1 : e#1#17:08:00#0 a#12#17:18:00#10 b#1#17:33:00#0 ',\n",
       " 'G2690 COMMUTER 300 LPPLLPPL X1 : b#2#17:14:00#0 a#3#17:19:00#4 f#2#17:33:00#0 ',\n",
       " 'G1721 COMMUTER 300 LPPLLPPL X1 : f#1#17:16:00#0 a#0#17:26:00#30 c#0#18:01:00#0 ',\n",
       " 'G78 COMMUTER 300 LPPLLPPL X1 : b#2#17:29:00#0 a#1#17:34:00#3 e#2#17:47:00#0 ',\n",
       " 'G1151 COMMUTER 300 LPPLLPPL X1 : h#1#17:34:00#0 a#12#17:39:00#4 b#1#17:48:00#0 ',\n",
       " 'G1550 COMMUTER 300 LPPLLPPL X1 : b#2#17:34:00#0 a#6#17:39:00#8 f#2#17:57:00#0 ',\n",
       " 'G829 COMMUTER 300 LPPLLPPL X1 : e#1#17:33:00#0 a#13#17:43:00#6 d#1#17:53:00#0 ',\n",
       " 'G830 COMMUTER 300 LPPLLPPL X1 : d#2#17:41:00#0 a#5#17:45:00#7 e#2#18:02:00#0 ',\n",
       " 'D3256 COMMUTER 200 LPPL X1 : d#2#17:44:00#0 a#15#17:48:00#11 i#2#18:06:00#0 ',\n",
       " 'G293 COMMUTER 300 LPPLLPPL X1 : e#1#17:38:00#0 a#13#17:48:00#7 b#1#18:00:00#0 ',\n",
       " 'G1028 COMMUTER 300 LPPLLPPL X1 : d#2#17:46:00#0 a#4#17:50:00#7 h#2#18:02:00#0 ',\n",
       " 'G877 COMMUTER 300 LPPLLPPL X1 : e#1#17:42:00#0 a#11#17:52:00#8 b#1#18:05:00#0 ',\n",
       " 'D3285 COMMUTER 200 LPPL X1 : d#2#17:51:00#0 a#0#17:55:00#30 c#0#18:30:00#0 ',\n",
       " 'G290 COMMUTER 300 LPPLLPPL X1 : e#1#17:46:00#0 a#0#17:56:00#10 b#1#18:11:00#0 ',\n",
       " 'G508 COMMUTER 300 LPPLLPPL X1 : b#2#17:52:00#0 a#3#17:57:00#7 e#2#18:14:00#0 ',\n",
       " 'G521G528 COMMUTER 300 LPPLLPPL X1 : e#1#17:50:00#0 a#6#18:00:00#20 e#2#18:30:00#0 ',\n",
       " 'G1156 COMMUTER 300 LPPLLPPL X1 : b#2#18:00:00#0 a#4#18:05:00#4 h#2#18:14:00#0 ',\n",
       " 'G1553 COMMUTER 300 LPPLLPPL X1 : e#1#17:56:00#0 a#8#18:06:00#13 b#1#18:24:00#0 ',\n",
       " 'G1540 COMMUTER 300 LPPLLPPL X1 : b#2#18:05:00#0 a#5#18:10:00#15 f#2#18:35:00#0 ',\n",
       " 'G81 COMMUTER 300 LPPLLPPL X1 : e#1#18:01:00#0 a#10#18:11:00#3 d#1#18:18:00#0 ',\n",
       " 'G1010 COMMUTER 300 LPPLLPPL X1 : d#2#18:13:00#0 a#0#18:17:00#30 c#0#18:52:00#0 ',\n",
       " 'G1169 COMMUTER 300 LPPLLPPL X1 : f#1#18:07:00#0 a#11#18:17:00#7 b#1#18:29:00#0 ',\n",
       " 'G1164 COMMUTER 300 LPPLLPPL X1 : b#2#18:17:00#0 a#4#18:22:00#13 e#2#18:45:00#0 ',\n",
       " 'G1743 COMMUTER 300 LPPLLPPL X1 : f#1#18:13:00#0 a#10#18:23:00#6 b#1#18:34:00#0 ',\n",
       " 'G1788 COMMUTER 300 LPPLLPPL X1 : c#0#18:21:00#0 a#6#18:26:00#30 f#2#19:06:00#0 ',\n",
       " 'G94 COMMUTER 300 LPPLLPPL X1 : b#2#18:22:00#0 a#1#18:27:00#3 e#2#18:40:00#0 ',\n",
       " 'G2043 COMMUTER 300 LPPLLPPL X1 : e#1#18:18:00#0 a#13#18:28:00#21 d#1#18:53:00#0 ',\n",
       " 'G884 COMMUTER 300 LPPLLPPL X1 : d#2#18:28:00#0 a#0#18:32:00#30 c#0#19:07:00#0 ',\n",
       " 'D2235 COMMUTER 200 LPPL X1 : i#1#18:27:00#0 a#12#18:34:00#4 d#1#18:42:00#0 ',\n",
       " 'D2238 COMMUTER 200 LPPL X1 : i#1#18:27:00#0 a#0#18:34:00#4 d#1#18:42:00#0 ',\n",
       " 'G402 COMMUTER 300 LPPLLPPL X1 : b#2#18:32:00#0 a#3#18:37:00#4 e#2#18:51:00#0 ',\n",
       " 'G845 COMMUTER 300 LPPLLPPL X1 : e#1#18:30:00#0 a#8#18:40:00#4 b#1#18:49:00#0 ',\n",
       " 'D5785 COMMUTER 200 LPPL X1 : i#1#18:34:00#0 a#18#18:41:00#4 d#1#18:49:00#0 ',\n",
       " 'D5788 COMMUTER 200 LPPL X1 : i#1#18:34:00#0 a#0#18:41:00#4 d#1#18:49:00#0 ',\n",
       " 'G532 COMMUTER 300 LPPLLPPL X1 : d#2#18:38:00#0 a#4#18:42:00#24 e#2#19:16:00#0 ',\n",
       " 'D2184 COMMUTER 200 LPPL X1 : d#2#18:39:00#0 a#18#18:43:00#10 i#2#19:00:00#0 ',\n",
       " 'D2185 COMMUTER 200 LPPL X1 : d#2#18:39:00#0 a#0#18:43:00#10 i#2#19:00:00#0 ',\n",
       " 'D5865 COMMUTER 200 LPPL X1 : d#2#18:39:00#0 a#0#18:43:00#10 i#2#19:00:00#0 ',\n",
       " 'G339 COMMUTER 300 LPPLLPPL X1 : e#1#18:35:00#0 a#11#18:45:00#5 b#1#18:55:00#0 ',\n",
       " 'G1140 COMMUTER 300 LPPLLPPL X1 : b#2#18:49:00#0 a#6#18:54:00#7 h#2#19:06:00#0 ',\n",
       " 'G1847 COMMUTER 300 LPPLLPPL X1 : e#1#18:45:00#0 a#13#18:55:00#4 b#1#19:04:00#0 ',\n",
       " 'G1747 COMMUTER 300 LPPLLPPL X1 : f#1#18:50:00#0 a#10#19:00:00#4 b#1#19:09:00#0 ',\n",
       " 'G1132 COMMUTER 300 LPPLLPPL X1 : b#2#18:57:00#0 a#1#19:02:00#9 h#2#19:16:00#0 ',\n",
       " 'G545 COMMUTER 300 LPPLLPPL X1 : e#1#18:58:00#0 a#11#19:08:00#3 b#1#19:16:00#0 ',\n",
       " 'G1992 COMMUTER 300 LPPLLPPL X1 : d#2#19:06:00#0 a#0#19:10:00#11 e#2#19:31:00#0 ',\n",
       " 'G854 COMMUTER 300 LPPLLPPL X1 : e#1#19:02:00#0 a#0#19:12:00#30 c#0#19:47:00#0 ',\n",
       " 'D7016D7017 COMMUTER 200 LPPL X1 : d#2#19:10:00#0 a#20#19:14:00#20 d#1#19:38:00#0 ',\n",
       " 'D7026D7027 COMMUTER 200 LPPL X1 : d#2#19:10:00#0 a#19#19:14:00#20 d#1#19:38:00#0 ',\n",
       " 'G1536 COMMUTER 300 LPPLLPPL X1 : b#2#19:15:00#0 a#4#19:20:00#7 e#2#19:37:00#0 ',\n",
       " 'G638 COMMUTER 300 LPPLLPPL X1 : b#2#19:20:00#0 a#5#19:25:00#13 f#2#19:48:00#0 ',\n",
       " 'G2282 COMMUTER 300 LPPLLPPL X1 : d#2#19:22:00#0 a#1#19:26:00#6 e#2#19:42:00#0 ',\n",
       " 'G2625 COMMUTER 300 LPPLLPPL X1 : e#1#19:16:00#0 a#0#19:26:00#30 c#0#20:01:00#0 ',\n",
       " 'G2628 COMMUTER 300 LPPLLPPL X1 : e#1#19:16:00#0 a#0#19:26:00#30 c#0#20:01:00#0 ',\n",
       " 'D3281 COMMUTER 200 LPPL X1 : c#0#19:26:00#0 a#15#19:31:00#30 d#1#20:05:00#0 ',\n",
       " 'G3256 COMMUTER 300 LPPLLPPL X1 : d#2#19:27:00#0 a#0#19:31:00#30 c#0#20:06:00#0 ',\n",
       " 'G1790 COMMUTER 300 LPPLLPPL X1 : d#2#19:28:00#0 a#0#19:32:00#30 c#0#20:07:00#0 ',\n",
       " 'D2162 COMMUTER 200 LPPL X1 : f#1#19:24:00#0 a#0#19:34:00#30 c#0#20:09:00#0 ',\n",
       " 'G1777 COMMUTER 300 LPPLLPPL X1 : f#1#19:27:00#0 a#11#19:37:00#5 b#1#19:47:00#0 ',\n",
       " 'D3290 COMMUTER 200 LPPL X1 : d#2#19:37:00#0 a#0#19:41:00#30 c#0#20:16:00#0 ',\n",
       " 'D5831 COMMUTER 200 LPPL X1 : i#1#19:34:00#0 a#0#19:41:00#30 c#0#20:16:00#0 ',\n",
       " 'G2041 COMMUTER 300 LPPLLPPL X1 : d#2#19:48:00#0 a#0#19:52:00#30 c#0#20:27:00#0 ',\n",
       " 'G1114 COMMUTER 300 LPPLLPPL X1 : b#2#19:50:00#0 a#0#19:55:00#30 c#0#20:30:00#0 ',\n",
       " 'G1736 COMMUTER 300 LPPLLPPL X1 : f#1#19:49:00#0 a#0#19:59:00#30 c#0#20:34:00#0 ',\n",
       " 'D2155 COMMUTER 200 LPPL X1 : i#1#19:53:00#0 a#0#20:00:00#6 d#1#20:10:00#0 ',\n",
       " 'D2158 COMMUTER 200 LPPL X1 : i#1#19:53:00#0 a#0#20:00:00#6 d#1#20:10:00#0 ',\n",
       " 'G3120 COMMUTER 300 LPPLLPPL X1 : f#1#19:50:00#0 a#3#20:00:00#4 e#2#20:14:00#0 ',\n",
       " 'G3121 COMMUTER 300 LPPLLPPL X1 : f#1#19:50:00#0 a#0#20:00:00#4 e#2#20:14:00#0 ',\n",
       " 'G1032 COMMUTER 300 LPPLLPPL X1 : d#2#19:58:00#0 a#4#20:02:00#7 h#2#20:14:00#0 ',\n",
       " 'G1033 COMMUTER 300 LPPLLPPL X1 : d#2#19:58:00#0 a#0#20:02:00#7 h#2#20:14:00#0 ',\n",
       " 'G855 COMMUTER 300 LPPLLPPL X1 : e#1#20:00:00#0 a#0#20:10:00#30 c#0#20:45:00#0 ',\n",
       " 'G2036 COMMUTER 300 LPPLLPPL X1 : d#2#20:09:00#0 a#0#20:13:00#30 c#0#20:48:00#0 ',\n",
       " 'G1036 COMMUTER 300 LPPLLPPL X1 : d#2#20:10:00#0 a#6#20:14:00#5 h#2#20:24:00#0 ',\n",
       " 'G1037 COMMUTER 300 LPPLLPPL X1 : d#2#20:10:00#0 a#0#20:14:00#5 h#2#20:24:00#0 ',\n",
       " 'G503 COMMUTER 300 LPPLLPPL X1 : e#1#20:05:00#0 a#8#20:15:00#4 b#1#20:24:00#0 ',\n",
       " 'G1012 COMMUTER 300 LPPLLPPL X1 : d#2#20:15:00#0 a#0#20:19:00#30 c#0#20:54:00#0 ',\n",
       " 'G1215 COMMUTER 300 LPPLLPPL X1 : e#1#20:09:00#0 a#12#20:19:00#5 b#1#20:29:00#0 ',\n",
       " 'G1218 COMMUTER 300 LPPLLPPL X1 : e#1#20:09:00#0 a#0#20:19:00#5 b#1#20:29:00#0 ',\n",
       " 'G440 COMMUTER 300 LPPLLPPL X1 : b#2#20:18:00#0 a#5#20:23:00#3 e#2#20:36:00#0 ',\n",
       " 'G1729 COMMUTER 300 LPPLLPPL X1 : f#1#20:15:00#0 a#11#20:25:00#9 d#1#20:38:00#0 ',\n",
       " 'D365 COMMUTER 200 LPPL X1 : i#1#20:21:00#0 a#0#20:28:00#30 c#0#21:03:00#0 ',\n",
       " 'G1289 COMMUTER 300 LPPLLPPL X1 : e#1#20:19:00#0 a#8#20:29:00#4 b#1#20:38:00#0 ',\n",
       " 'G1292 COMMUTER 300 LPPLLPPL X1 : e#1#20:19:00#0 a#0#20:29:00#4 b#1#20:38:00#0 ',\n",
       " 'G810 COMMUTER 300 LPPLLPPL X1 : b#2#20:27:00#0 a#3#20:32:00#4 e#2#20:46:00#0 ',\n",
       " 'G505 COMMUTER 300 LPPLLPPL X1 : e#1#20:24:00#0 a#11#20:34:00#4 b#1#20:43:00#0 ',\n",
       " 'G850 COMMUTER 300 LPPLLPPL X1 : d#2#20:35:00#0 a#0#20:39:00#30 c#0#21:14:00#0 ',\n",
       " 'G1190 COMMUTER 300 LPPLLPPL X1 : d#2#20:39:00#0 a#2#20:43:00#4 e#2#20:57:00#0 ',\n",
       " 'G886 COMMUTER 300 LPPLLPPL X1 : b#2#20:42:00#0 a#0#20:47:00#30 c#0#21:22:00#0 ',\n",
       " 'G650 COMMUTER 300 LPPLLPPL X1 : b#2#20:46:00#0 a#8#20:51:00#3 f#2#21:04:00#0 ',\n",
       " 'G895 COMMUTER 300 LPPLLPPL X1 : e#1#20:41:00#0 a#11#20:51:00#3 d#1#20:58:00#0 ',\n",
       " 'D2176 COMMUTER 200 LPPL X1 : d#2#20:49:00#0 a#4#20:53:00#7 i#2#21:07:00#0 ',\n",
       " 'D2177 COMMUTER 200 LPPL X1 : d#2#20:49:00#0 a#0#20:53:00#7 i#2#21:07:00#0 ',\n",
       " 'G546 COMMUTER 300 LPPLLPPL X1 : b#2#20:55:00#0 a#3#21:00:00#5 e#2#21:15:00#0 ',\n",
       " 'D5828 COMMUTER 200 LPPL X1 : i#1#20:55:00#0 a#0#21:02:00#30 c#0#21:37:00#0 ',\n",
       " 'G83 COMMUTER 300 LPPLLPPL X1 : e#1#21:01:00#0 a#11#21:11:00#3 b#1#21:19:00#0 ',\n",
       " 'G2819 COMMUTER 300 LPPLLPPL X1 : f#1#21:04:00#0 a#0#21:14:00#30 c#0#21:49:00#0 ',\n",
       " 'D5835 COMMUTER 200 LPPL X1 : i#1#21:09:00#0 a#0#21:16:00#30 c#0#21:51:00#0 ',\n",
       " 'G582 COMMUTER 300 LPPLLPPL X1 : d#2#21:12:00#0 a#0#21:16:00#30 c#0#21:51:00#0 ',\n",
       " 'D3261 COMMUTER 200 LPPL X1 : d#2#21:13:00#0 a#0#21:17:00#4 i#2#21:28:00#0 ',\n",
       " 'D3264 COMMUTER 200 LPPL X1 : d#2#21:13:00#0 a#14#21:17:00#4 i#2#21:28:00#0 ',\n",
       " 'G1014 COMMUTER 300 LPPLLPPL X1 : d#2#21:13:00#0 a#0#21:17:00#30 c#0#21:52:00#0 ',\n",
       " 'G1192 COMMUTER 300 LPPLLPPL X1 : d#2#21:17:00#0 a#6#21:21:00#3 e#2#21:34:00#0 ',\n",
       " 'G523 COMMUTER 300 LPPLLPPL X1 : e#1#21:13:00#0 a#0#21:23:00#30 c#0#21:58:00#0 ',\n",
       " 'C5522 COMMUTER 200 LPPL X1 : d#2#21:20:00#0 a#0#21:24:00#30 c#0#21:59:00#0 ',\n",
       " 'C5628 COMMUTER 200 LPPL X1 : d#2#21:25:00#0 a#0#21:29:00#30 c#0#22:04:00#0 ',\n",
       " 'D5781 COMMUTER 200 LPPL X1 : i#1#21:22:00#0 a#11#21:29:00#9 d#1#21:42:00#0 ',\n",
       " 'D5784 COMMUTER 200 LPPL X1 : i#1#21:22:00#0 a#0#21:29:00#9 d#1#21:42:00#0 ',\n",
       " 'G1116 COMMUTER 300 LPPLLPPL X1 : b#2#21:27:00#0 a#0#21:32:00#30 c#0#22:07:00#0 ',\n",
       " 'D7020 COMMUTER 200 LPPL X1 : d#2#21:33:00#0 a#0#21:37:00#30 c#0#22:12:00#0 ',\n",
       " 'G1118 COMMUTER 300 LPPLLPPL X1 : b#2#21:39:00#0 a#0#21:44:00#30 c#0#22:19:00#0 ',\n",
       " 'D5817 COMMUTER 200 LPPL X1 : i#1#21:38:00#0 a#0#21:45:00#30 c#0#22:20:00#0 ',\n",
       " 'D3278 COMMUTER 200 LPPL X1 : d#2#21:46:00#0 a#0#21:50:00#30 c#0#22:25:00#0 ',\n",
       " 'G1276 COMMUTER 300 LPPLLPPL X1 : e#1#21:40:00#0 a#0#21:50:00#30 c#0#22:25:00#0 ',\n",
       " 'G1120 COMMUTER 300 LPPLLPPL X1 : b#2#21:50:00#0 a#0#21:55:00#30 c#0#22:30:00#0 ',\n",
       " 'G1645 COMMUTER 300 LPPLLPPL X1 : d#2#21:51:00#0 a#0#21:55:00#30 c#0#22:30:00#0 ',\n",
       " 'G69 COMMUTER 300 LPPLLPPL X1 : e#1#21:45:00#0 a#0#21:55:00#30 c#0#22:30:00#0 ',\n",
       " 'G525 COMMUTER 300 LPPLLPPL X1 : e#1#21:53:00#0 a#0#22:03:00#30 c#0#22:38:00#0 ',\n",
       " 'D2171 COMMUTER 200 LPPL X1 : d#2#22:02:00#0 a#0#22:06:00#30 c#0#22:41:00#0 ',\n",
       " 'G507 COMMUTER 300 LPPLLPPL X1 : e#1#21:57:00#0 a#7#22:07:00#6 b#1#22:18:00#0 ',\n",
       " 'G2704 COMMUTER 300 LPPLLPPL X1 : d#2#22:05:00#0 a#0#22:09:00#30 c#0#22:44:00#0 ',\n",
       " 'D3042 COMMUTER 200 LPPL X1 : f#1#22:02:00#0 a#0#22:12:00#30 c#0#22:47:00#0 ',\n",
       " 'D7008 COMMUTER 200 LPPL X1 : d#2#22:13:00#0 a#0#22:17:00#30 c#0#22:52:00#0 ',\n",
       " 'D7018 COMMUTER 200 LPPL X1 : d#2#22:18:00#0 a#0#22:22:00#30 c#0#22:57:00#0 ',\n",
       " 'D7028 COMMUTER 200 LPPL X1 : d#2#22:18:00#0 a#0#22:22:00#30 c#0#22:57:00#0 ',\n",
       " 'G1016 COMMUTER 300 LPPLLPPL X1 : d#2#22:18:00#0 a#0#22:22:00#30 c#0#22:57:00#0 ',\n",
       " 'D3396 COMMUTER 200 LPPL X1 : d#2#22:25:00#0 a#0#22:29:00#30 c#0#23:04:00#0 ',\n",
       " 'C5624 COMMUTER 200 LPPL X1 : d#2#22:30:00#0 a#0#22:34:00#30 c#0#23:09:00#0 ',\n",
       " 'G1526 COMMUTER 300 LPPLLPPL X1 : b#2#22:30:00#0 a#0#22:35:00#30 c#0#23:10:00#0 ',\n",
       " 'G3246 COMMUTER 300 LPPLLPPL X1 : d#2#22:34:00#0 a#0#22:38:00#30 c#0#23:13:00#0 ',\n",
       " 'G3247 COMMUTER 300 LPPLLPPL X1 : d#2#22:34:00#0 a#0#22:38:00#30 c#0#23:13:00#0 ',\n",
       " 'G432 COMMUTER 300 LPPLLPPL X1 : b#2#22:38:00#0 a#0#22:43:00#30 c#0#23:18:00#0 ',\n",
       " 'D5821 COMMUTER 200 LPPL X1 : i#1#22:39:00#0 a#0#22:46:00#30 c#0#23:21:00#0 ',\n",
       " 'G527 COMMUTER 300 LPPLLPPL X1 : e#1#22:44:00#0 a#0#22:54:00#30 c#0#23:29:00#0 ',\n",
       " 'G1122 COMMUTER 300 LPPLLPPL X1 : b#2#22:56:00#0 a#0#23:01:00#30 c#0#23:36:00#0 ',\n",
       " 'G691 COMMUTER 300 LPPLLPPL X1 : e#1#22:51:00#0 a#0#23:01:00#30 c#0#23:36:00#0 ',\n",
       " 'G3238 COMMUTER 300 LPPLLPPL X1 : d#2#23:11:00#0 a#0#23:15:00#30 c#0#23:50:00#0 ',\n",
       " 'G3239 COMMUTER 300 LPPLLPPL X1 : d#2#23:11:00#0 a#0#23:15:00#30 c#0#23:50:00#0 ',\n",
       " 'G2352 COMMUTER 300 LPPLLPPL X1 : d#2#23:17:00#0 a#0#23:21:00#30 c#0#23:56:00#0 ',\n",
       " 'G2708 COMMUTER 300 LPPLLPPL X1 : d#2#23:19:00#0 a#0#23:23:00#30 c#0#23:58:00#0 ',\n",
       " 'G257 COMMUTER 300 LPPLLPPL X1 : e#1#23:15:00#0 a#0#23:25:00#30 c#0#00:00:00#0 ',\n",
       " 'G260 COMMUTER 300 LPPLLPPL X1 : e#1#23:15:00#0 a#0#23:25:00#30 c#0#00:00:00#0 ',\n",
       " 'G2706 COMMUTER 300 LPPLLPPL X1 : d#2#23:44:00#0 a#0#23:48:00#30 c#0#00:23:00#0 ']"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "timeTable = open(file=TextPath, mode=\"w\")  # 覆盖写入txt\n",
    "finalRes = []\n",
    "for i in range(0, len(arriveStList)):\n",
    "    tstr = \"{0}{1} {2} {3} \".format(\n",
    "        trainList[i], arriveStList[i], stopStList[i], leaveStList[i])\n",
    "    finalRes.append(tstr)  # 用于展示的列表\n",
    "    tstr1 = tstr+'\\n'\n",
    "    timeTable.writelines(tstr1)  # 按行写入\n",
    "\n",
    "timeTable.close()\n",
    "finalRes\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "vscode": {
     "languageId": "html"
    }
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.2"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
